package com.erp.erp_servers.money.imp;

import com.erp.erp_dao.money.IPaymentDao;
import com.erp.erp_entitys.money.entity.PaymentEntity;
import com.erp.erp_entitys.money.req.ImportCarryDetailInfoReq;
import com.erp.erp_entitys.money.req.ImportPurchaseInfoReq;
import com.erp.erp_entitys.money.req.PaymentPageListReq;
import com.erp.erp_entitys.money.rsp.*;
import com.erp.erp_servers.money.IPaymentService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @ClassName : PaymentServiceImp
 * @Description : 资金管理-付款实现类
 * @Author : lst
 * @Date: 2020-12-28 16:23
 */
@Service
public class PaymentServiceImp implements IPaymentService {

    /**
     * 注入付款mapper
     */
    private final IPaymentDao paymentDao;

    @Autowired
    public PaymentServiceImp(IPaymentDao paymentDao) {
        this.paymentDao = paymentDao;
    }


    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public PaymentEntity queryById(Integer id) {
        return paymentDao.queryById(id);
    }


    /**
     * 通过实体作为筛选条件查询
     *
     * @param payment 实例对象
     * @return 对象列表
     */
    @Override
    public List<PaymentEntity> queryAll(PaymentEntity payment) {
        return paymentDao.queryAll(payment);
    }


    /**
     * 新增数据
     *
     * @param payment 实例对象
     * @return 影响行数
     */
    @Override
    public int insert(PaymentEntity payment) {
        return paymentDao.insert(payment);
    }


    /**
     * 修改数据
     *
     * @param payment 实例对象
     * @return 影响行数
     */
    @Override
    public int update(PaymentEntity payment) {
        return paymentDao.update(payment);
    }

    /**
     * 获取付款信息
     * @param ids 付款id
     * @return 付款信息
     */
    @Override
    public List<PaymentEntity> getRefundInfo(List<String> ids) {
        return paymentDao.getRefundInfo(ids);
    }

    /**
     * 获取分页列表
     * @param req 实例对象
     * @return  分页列表
     */
    @Override
    public List<PaymentPageListRsp> getPaymentPageListInfo(PaymentPageListReq req) {
        return paymentDao.getPaymentPageListInfo(req);
    }


    /**
     * 获取采购信息
     * @param req 查询条件
     * @return 采购集合
     */
    @Override
    public List<ImportPurchaseRsp> getImportPurchaseInfo(ImportPurchaseInfoReq req) {
        return paymentDao.getImportPurchaseInfo(req);
    }

    /**
     * 获取采购样品信息
     * @param req 查询条件
     * @return 采购集合
     */
    @Override
    public List<ImportPurchaseRsp> getImportPurchaseSampleInfo(ImportPurchaseInfoReq req) {
        return paymentDao.getImportPurchaseSampleInfo(req);
    }

    /**
     * 获取出运明细信息
     * @param req 查询条件
     * @return 出运明细信息
     */
    @Override
    public List<ImportCarryDetailInfoRsp> getImportCarryDetailInfo(ImportCarryDetailInfoReq req) {
        return paymentDao.getImportCarryDetailInfo(req);
    }

    /**
     * getCountByCarryDetailBillNoOrProductId
     * @param billNo 出运明细单号
     * @param productId 出运明细产品id
     * @return 已做付款数量
     */
    @Override
    public int getCountByCarryDetailBillNoOrProductId(String billNo, Integer productId) {
        return paymentDao.getCountByCarryDetailBillNoOrProductId(billNo, productId);
    }


    //*****************************************银行信息************************************************************
    /**
     * 获取银行信息
     * @param code 供应商编码
     * @return 银行信息
     */
    @Override
    public List<BankInfoRsp> getBankInfo(String code) {
        if(StringUtils.isBlank(code)){
            return null;
        }
        return paymentDao.getBankInfo(code);
    }



    //*****************************************供应商信息************************************************************
    /**
     * 获取供应商信息
     * @return 供应商信息
     */
    @Override
    public List<SupplierInfoRsp> getSupplierInfo() {
        return paymentDao.getSupplierInfo();
    }
}
